package com.huangfuyi.process.dao;

import com.huangfuyi.process.actuator.enums.EPNodeStatus;
import com.huangfuyi.process.entity.running.EPParamEntity;
import com.huangfuyi.process.entity.running.EPRunningEntity;

import java.util.List;

public interface EPCoreRunningDao<T extends EPRunningEntity, E extends EPParamEntity> {

    /**
     * 更新节点的运行状态，同时追加运行信息。
     */
    int updateAndAppendMessage(String runningId, EPNodeStatus nodeStatus, String runningMessage, Long updateTime);

    /**
     * 使用运行时id查询节点运行信息
     */
    T queryById(String runningId);

    /**
     * 使用流程实例id查询所有节点的运行信息
     */
    List<T> queryByInstanceId(String instanceId);

    /**
     * 查询流程节点已运行的节点数量
     */
    int countByInstanceId(String instanceId);

    /**
     * 新增一条运行信息
     */
    <K extends EPRunningEntity> int add(K runningInfo);

    /**
     * 保存节点运行参数
     */
    <K extends EPParamEntity> int saveParams(List<K> params);

    /**
     * 使用运行时id查询节点运行时的参数信息
     */
    List<E> queryParamsByRunningId(String runningId);

}
